package XianCheng;

public class TestThread {
   public static void main(String[] args) {

      //Thread和Runnable创建线程的方式，一共有三种。

      //方式一：创建两个类的对象，两个类的对象分别调用start()方法，start()方法间接调用run()方法
//            T1 t1=new T1();
//            T2 t2=new T2();
//            t1.start();
//            t2.start();


      //方式二：创建Thread类的匿名子类的匿名对象，这样可以省着创建子类了
//            new Thread() {
//                  public void run() {
//                        for (int i = 0; i < 100; i++) {
//                              if (i % 2 == 0) {
//                                    System.out.println(Thread.currentThread().getName() + "偶数-->" + i);
//                              }
//                        }
//                  }
//            }.start();
//
//            new Thread() {
//                  public void run() {
//                        for (int i = 0; i < 100; i++) {
//                              if (i % 2 != 0) {
//                                    System.out.println(Thread.currentThread().getName() + "奇数-->" + i);
//                              }
//                        }
//                  }
//            }.start();


      //方式三：
//            new Thread(new Runnable() {
//                  @Override
//                  public void run() {
//                        for (int i = 0; i < 100; i++) {
//                              if (i % 2 == 0) {
//                                    System.out.println(Thread.currentThread().getName() + "偶数-->" + i);
//                              }
//                        }
//                  }
//            }).start();
   }
}
//该线程打印偶数
//class T1 extends Thread{
//
//      @Override
//      public void run(){
//            for(int i=0;i<100;i++){
//                  if(i%2==0){
//                        System.out.println(Thread.currentThread().getName()+"偶数-->"+i);
//                  }
//            }
//      }
//}
////该线程打印奇数
//class T2 extends Thread{
//
//      @Override
//      public void run(){
//            for(int i=0;i<100;i++){
//                  if(i%2!=0){
//                        System.out.println(Thread.currentThread().getName()+" "+i);
//                  }
//            }
//      }
//}


//Thread常用方法：
//start():作用：(1)启动线程;(2)调用线程的run()
//run():将线程要执行的代码，声明在run()方法里面
//currentThread():获取当前执行代码对应的线程
//getName()：获取线程名
//setName():设置线程名
//sleep():静态方法，调用时，可以使得当前线程进入睡眠
//yield():一旦执行，此方法，就释放了CPU的执行权，客气下给别人继续这个线程。
//join():在线程a中通过线程b来调用join(),意味着线程a进入阻塞状态，知道线程b执行结束，线程a才结束阻塞状态，继续执行。
//boolean  isAlive():判断当前线程是否还存活
